/***************************/
//@Author: Adrian "yEnS" Mato Gondelle & Ivan Guardado Castro
//@website: www.yensdesign.com
//@email: yensamg@gmail.com
//@license: Feel free to use it, but keep this credits please!					
/***************************/

$(document).ready(function(){
	//global vars
	var form = $("#signUpForm");
	var UserName = $("#UserName");
	var UserNameInfo = $("#UserNameInfo");
    var pass1 = $("#pass1");
	var pass1Info = $("#pass1Info");
	var pass2 = $("#pass2");
	var pass2Info = $("#pass2Info");
    var FullName = $("#FullName");
    var FullNameInfo = $("#FullNameInfo");
    var PhoneNumber = $("#PhoneNumber");
    var PhoneNumberInfo = $("#PhoneNumberInfo");
    var Address = $("#Address");
    var AddressInfo = $("#AddressInfo");
    var FaceAccount = $("#FaceAccount");
    var FaceAccountInfo = $("#FaceAccountInfo");
    var day = $("#day");
    var year = $("#year");
    var Introduce = $("#Introduce");
	
	//On blur
	UserName.blur(validateUserName);
	pass1.blur(validatePass1);
	pass2.blur(validatePass2);
    FullName.blur(validateFullName);
    PhoneNumber.blur(validatePhoneNumber);
    Address.blur(validateAddress);  
    FaceAccount.blur(validateFaceAccount);
    day.blur(validateday);
    year.blur(validateyear);     
	//On key press
	UserName.keyup(validateUserName);
    PhoneNumber.keyup(validatePhoneNumber);
	pass1.keyup(validatePass1);
	pass2.keyup(validatePass2);
	Introduce.keyup(validateIntroduce);
    day.keyup(validateday);
    year.keyup(validateyear);
	//On Submitting
	form.submit(function(){
		if(validateUserName() & validatePhoneNumber() & validatePass1() & validatePass2() & validateIntroduce()
        & validateFullName() & validateday() &validateyear() & validateAddress() & validateFaceAccount())
			return true
		else
			return false;
	});
	
	function validateUserName(){
		//if it's NOT valid
		if(UserName.val().length < 4){
			UserName.addClass("error");
			UserNameInfo.text("Tên tài khoản có độ dài tối thiểu 3 kí tự!");
			UserNameInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			UserName.removeClass("error");
			UserNameInfo.text("Tên tài khoản bạn muốn sử dụng để đăng nhập?");
			UserNameInfo.removeClass("error");
			return true;
		}
	}
	function validatePass1(){
		var a = $("#password1");
		var b = $("#password2");

		//it's NOT valid
		if(pass1.val().length <5){
			pass1.addClass("error");
			pass1Info.text("Hãy nhớ mật khẩu dài ít nhất 6 kí tự: chỉ gồm chữ, số hoặc dấu '_'");
			pass1Info.addClass("error");
			return false;
		}
		//it's valid
		else{			
			pass1.removeClass("error");
			pass1Info.text("Ít nhất 6 kí tự: chỉ gồm chữ, số hoặc dấu '_'");
			pass1Info.removeClass("error");
			validatePass2();
			return true;
		}
	}
	function validatePass2(){
		var a = $("#password1");
		var b = $("#password2");
		//are NOT valid
		if( pass1.val() != pass2.val() ){
			pass2.addClass("error");
			pass2Info.text("Mật khẩu nhập lại không khớp!");
			pass2Info.addClass("error");
			return false;
		}
		//are valid
		else{
			pass2.removeClass("error");
			pass2Info.text("Xác nhận lại mật khẩu bạn muốn sử dụng");
			pass2Info.removeClass("error");
			return true;
		}
	}
    //validation functions
	function validateFullName(){
		//testing regular expression
		var a = $("#FullName").val();
        a = locdau(a);
		var filter = /^[a-zA-Z]*$/;
		//if it's valid email
		if(filter.test(a)){
			FullName.removeClass("error");
			FullNameInfo.text("Tên đầu đủ của bạn là gì?");
			FullNameInfo.removeClass("error");
			return true;
		}
		//if it's NOT valid
		else{
			FullName.addClass("error");
			FullNameInfo.text("Tên chỉ có thể chứa chữ và khoảng trắng");
			FullNameInfo.addClass("error");
			return false;
		}
	}
    //validation functions
	function validatePhoneNumber(){
		//testing regular expression
		var a = $("#PhoneNumber").val();
		var filter = /^0[1-9][0-9]*$/;
		//if it's valid email
		if(filter.test(a) && a.length>9){
			PhoneNumber.removeClass("error");
			PhoneNumberInfo.text("Số điện thoại chính xác của bạn, chúng tôi sẽ gửi tin xác thực về");
			PhoneNumberInfo.removeClass("error");
			return true;
		}
		//if it's NOT valid
		else{
			PhoneNumber.addClass("error");
			PhoneNumberInfo.text("Số điện thoại chỉ gồm số");
			PhoneNumberInfo.addClass("error");
			return false;
		}
	}
	function validateIntroduce(){
		//it's NOT valid
		if(Introduce.val().length < 3){
			Introduce.addClass("error");
			return false;
		}
		//it's valid
		else{			
			Introduce.removeClass("error");
			return true;
		}
	}
    function validateAddress(){
		//it's NOT valid
		if(Address.val().length < 3){
			Address.addClass("error");
			return false;
		}
		//it's valid
		else{			
			Address.removeClass("error");
			return true;
		}
	}
    function validateFaceAccount(){
		//it's NOT valid
		if(FaceAccount.val().length < 3){
			FaceAccount.addClass("error");
			return false;
		}
		//it's valid
		else{			
			FaceAccount.removeClass("error");
			return true;
		}
	}
    function validateday(){
        //it's valid
        var filter = /^[1-9][0-9]*$/;
		if(day.val().length >= 1 && day.val() <= 31 && filter.test(day.val())){
            day.removeClass("error");
			return true;
		}
        //it's NOT valid
		else{			
			day.addClass("error");
			return false;
		}
	}
    function validateyear(){
        var filter = /^[1-9][0-9]*$/;
        //it's valid
		if(year.val().length >= 4 && year.val() <= 2015 && year.val() >= 1900 && filter.test(year.val())){
            year.removeClass("error");
			return true;
		}
        //it's NOT valid
		else{			
			year.addClass("error");
			return false;
		}
	}
    
     function locdau(str) {
        str= str.toLowerCase();// chuyển chuỗi sang chữ thường để xử lý
        /* tìm kiếm và thay thế tất cả các nguyên âm có dấu sang không dấu*/
        str= str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g,"a");
        str= str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g,"e");
        str= str.replace(/ì|í|ị|ỉ|ĩ/g,"i");
        str= str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g,"o");
        str= str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g,"u");
        str= str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g,"y");
        str= str.replace(/đ/g,"d");
        str= str.replace(/!|@|%|\^|\*|\(|\)|\+|\=|\<|\>|\?|\/|,|\.|\:|\;|\'| |\"|\&|\#|\[|\]|~|$|_/g,"-");
        /* tìm và thay thế các kí tự đặc biệt trong chuỗi sang kí tự - */
        str= str.replace(/-/g,""); //thay the - bằng trống
        return str;
    }
});
